    
namespace MinCultura.Sipa.AgentesArtes
{
	using System;
	using System.Data;
	using System.Data.SqlClient;
	using System.Collections;
	using Common;	
	using SystemFrameworks;
	using Microsoft.ApplicationBlocks.Data;

	/// <summary>
	/// Clase de acceso a datos para la entidad ART_TIPO_VIVIENDA
	/// </summary>

	public class TipoVivienda
	{

    #region propiedades

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

        #endregion

    #region Private Data Access Atributes
    private const String TIV_ID_PARAM = "@TIV_ID";
    private const String TIV_TIPO_PARAM = "@TIV_TIPO";
	#endregion Private Data Access Atributes
  
	/// <summary>
	/// Constructor de la clase ARTTIPOVIVIENDA
	/// </summary>
        public TipoVivienda(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }


	public MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData BuscarTipoVivienda()
	{
	MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData response = new MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData();
	SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_TIPO_VIVIENDA", response.Tables[0]);
		if (response.Tables[0].Rows.Count == 0)
			return null;
		return response;
	}
	
	
	public MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData ConsultarTipoVivienda	(decimal parTIV_ID)
	{
	MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData response = new MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData();
	
		SqlParameter param1 = new SqlParameter(TIV_ID_PARAM, parTIV_ID);
		
		SqlParameter[] parameters = {param1};		
		SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_TIPO_VIVIENDA", response.Tables[0], parameters);
		if (response.Tables[0].Rows.Count == 0)
			return null;
		return response;
	}
			
	public decimal  AdicionarTipoVivienda (MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData datos)
	{
		DataTable tabla = datos.Tables[MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.ART_TIPO_VIVIENDA_TABLE];
		decimal decTIV_ID=0;
				
		try
		{	
			//StartTransaction();

			foreach (DataRow row in tabla.Rows)
			{				
				SqlParameter param1 = new SqlParameter(TIV_ID_PARAM, SqlDbType.Decimal);
				param1.Direction=ParameterDirection.Output;
				SqlParameter param2 = new SqlParameter(TIV_TIPO_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.TIV_TIPO_FIELD]);					
				SqlParameter[] parameters = {param1,param2};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_TIPO_VIVIENDA", parameters); 				
				decTIV_ID=decimal.Parse(param1.Value.ToString());				
			}

            //if (this.RegistroAuditoria!=null)
            //{
            //    this.RegistroAuditoria.Rows[0][RegistroAuditoriaData.REG_IDENTIFICADOR_FIELD] = decTIV_ID;
            //}

            //RegistrarAuditoria();

            //CompleteTransaction();
	
			return(decTIV_ID);			 
		} 		
		catch (SqlException sqlEx)
		{		
			//AbortTransaction();
			throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_TIPO_VIVIENDA"),sqlEx); 
		}     
		catch (Exception ex) 
		{ 
			//AbortTransaction();
			throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_TIPO_VIVIENDA"),ex); 
		}	
	}		
	
	public void ActualizarTipoVivienda (MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData datos)
	{
		DataTable tabla = datos.Tables[MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.ART_TIPO_VIVIENDA_TABLE];
		MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData tipoViviendaDataAnt = new MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData();
		try
		{
            //if (this.RegistroAuditoria!=null)
            //{
            //    tipoViviendaDataAnt = ConsultarTipoVivienda(Convert.ToDecimal(tabla.Rows[0][MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.TIV_ID_FIELD]));
            //}

            //StartTransaction();
			
			foreach (DataRow row in tabla.Rows)
			{			
			SqlParameter param1 = new SqlParameter(TIV_ID_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.TIV_ID_FIELD]);
			SqlParameter param2 = new SqlParameter(TIV_TIPO_PARAM, row[MinCultura.Sipa.DataAccess.AgentesArtes.TipoViviendaData.TIV_TIPO_FIELD]);
				
			SqlParameter[] parameters = {param1,param2};
			SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_ART_TIPO_VIVIENDA", parameters); 
			}

            //RegistrarAuditoria(tipoViviendaDataAnt.Tables[0],tabla);
 
            //CompleteTransaction();
		} 
		catch (SqlException sqlEx)
		{		
			//AbortTransaction();
			throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_TIPO_VIVIENDA"),sqlEx); 
		}     
		catch (Exception ex) 
		{ 
			//AbortTransaction();
			throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_TIPO_VIVIENDA"),ex); 
		}
	} 
	
		/// <summary>
		/// Elimina un registro de la entidad Arttipovivienda
		/// </summary>
		/// <param name="parTIV_ID">Identificador del registro
		public void EliminarTipoVivienda (decimal parTIV_ID)
		{
			try
			{
				SqlParameter param1 = new SqlParameter(TIV_ID_PARAM, parTIV_ID);
					
				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_TIPO_VIVIENDA", parameters); 
			}
			catch (SqlException sqlEx)
			{		
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_TIPO_VIVIENDA"),sqlEx); 
			}     
			catch (Exception ex) 
			{ 
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_TIPO_VIVIENDA"),ex); 
			}
		}
		
		public void EliminarTipoVivienda(ArrayList arrIDs)
    {
			try
			{
				//StartTransaction();

				foreach(object Item in arrIDs)
				{		
				SqlParameter param1 = new SqlParameter(TIV_ID_PARAM, decimal.Parse(Item.ToString()));
				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_TIPO_VIVIENDA", parameters); 
				}

                //RegistrarAuditoria();

                //CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
				//AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx,"ART_TIPO_VIVIENDA"),sqlEx); 
			}
			catch (Exception ex)
			{
				//AbortTransaction();
				throw new ApplicationExceptionManager (Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_TIPO_VIVIENDA"),ex); 
			}				  					 
    }
		
	}	
}		

